Intel EdisonでUSBカメラを使ってみる
はじめに
前回書いたIntel EdisonをUSBオーディオで喋らせるで、EdisonではUSBデバイスも簡単に使えることがわかりました。で、この記事の中で
USBカメラなども繋げてみると楽しそうですね。今度チャレンジしてみたいと思います。
と書きましたので、有言実行!やってみました!
やってみた
デバイス
僕の机の引き出しの奥深くに埃まみれで転がっていたELECOMのUCAM-DLF30MというUSBカメラを繋いでみました。6年前の製品で、なんと30万画素です。タカラトミーのデコパレットでさえ200万画素だというのに...
Intel Edisonに認識させる
特に難しいことなく、USBポートに接続したらそのまま認識しました。以下dmesgの内容です。
[ 113.319202] usb 1-1: new high-speed USB device number 2 using dwc3-host [ 113.418181] usb 1-1: New USB device found, idVendor=056e, idProduct=7001 [ 113.418213] usb 1-1: New USB device strings: Mfr=16, Product=96, SerialNumber=0 [ 113.418235] usb 1-1: Product: USB2.0 PC Camera [ 113.418254] usb 1-1: Manufacturer: PixArt Imaging Inc. [ 113.525628] uvcvideo: Found UVC 1.00 device USB2.0 PC Camera (056e:7001) [ 113.535225] input: USB2.0 PC Camera as /devices/pci0000:00/0000:00:11.0/dwc3-host.2/usb1/1-1/1-1:1.0/input/input2 [ 113.535842] usbcore: registered new interface driver uvcvideo [ 113.535862] USB Video Class driver (1.1.1)
Intel Edisonで使うためのパッケージをインストールする
CUIからUSBカメラを使うためのパッケージはいろんな種類があるのですが、今回は一番お手軽なfswebcamを使いました。opkgコマンドでさくっとインストールします。
# opkg list | grep fswebcam fswebcam - 20140113-r0 - fswebcam version 20140113-r0 Small and simple webcam software for *nix fswebcam-dbg - 20140113-r0 - fswebcam version 20140113-r0 - Debugging files Small and simple webcam fswebcam-dev - 20140113-r0 - fswebcam version 20140113-r0 - Development files Small and simple webcam fswebcam-doc - 20140113-r0 - fswebcam version 20140113-r0 - Documentation files Small and simple # opkg install fswebcam
Go言語でWebアプリを作る
Webアプリ、と言っても大したものでは無く、HTTPでアクセスしたらfswebcamで作成したJPG画像を表示する、というだけです。アクセスするたびに実行されるので、Webブラウザのリロードによって最新の映像が表示されます。
package main import ( "net/http" "os/exec" ) func handler(w http.ResponseWriter, r *http.Request) { cmd := exec.Command("fswebcam") cmd.Args = []string{"fswebcam", "./webcam.jpg"} cmd.Dir = "." err := cmd.Run() if err != nil { panic(err) } http.ServeFile(w, r, "webcam.jpg") } func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil) }
go buildして作成されたバイナリファイルをscpでIntel Edisonに転送し、CUIから実行します。
実行結果
Webブラウザでhttp://<Intel EdisonのIPアドレス>:8080/にアクセスすると、以下のようにJPG画像が表示されます。
何度かリロードしたらこんな感じになります。モデルはうちの三男(犬)。さすが30万画素、ちょっと暗がりだと映像が荒くてさっぱりわかりませんが、とりあえずちゃんと撮影できてます。
さいごに
高解像度のUSBカメラを繋げれば、監視カメラ的な使い方はできそうです。顔認識が出来るともっと面白いですね。今度はその辺をやってみたいと思います!